home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / share / hplip / ui4 / devicesetupdialog.py < prev    next >
Text File  |  2009-10-09  |  9KB  |  298 lines

  1. # -*- coding: utf-8 -*-
  2. #
  3. # (c) Copyright 2001-2008 Hewlett-Packard Development Company, L.P.
  4. #
  5. # This program is free software; you can redistribute it and/or modify
  6. # it under the terms of the GNU General Public License as published by
  7. # the Free Software Foundation; either version 2 of the License, or
  8. # (at your option) any later version.
  9. #
  10. # This program is distributed in the hope that it will be useful,
  11. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13. # GNU General Public License for more details.
  14. #
  15. # You should have received a copy of the GNU General Public License
  16. # along with this program; if not, write to the Free Software
  17. # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
  18. #
  19. # Authors: Don Welch
  20. #
  21.  
  22. # StdLib
  23. import operator
  24. import string
  25.  
  26. # Local
  27. from base.g import *
  28. from base import device, utils, pml
  29. from prnt import cups
  30. from base.codes import *
  31. from ui_utils import *
  32.  
  33. # Qt
  34. from PyQt4.QtCore import *
  35. from PyQt4.QtGui import *
  36.  
  37. # Ui
  38. from devicesetupdialog_base import Ui_Dialog
  39.  
  40. TAB_POWER_SETTINGS = 0
  41.  
  42. class DeviceSetupDialog(QDialog, Ui_Dialog):
  43.     def __init__(self, parent, device_uri):
  44.         QDialog.__init__(self, parent)
  45.         self.setupUi(self)
  46.         self.device_uri = device_uri
  47.         self.mq = {}
  48.         self.dev = None
  49.         self.initUi()
  50.  
  51.         QTimer.singleShot(0, self.updateUi)
  52.  
  53.  
  54.     def initUi(self):
  55.         # connect signals/slots
  56.         self.connect(self.CancelButton, SIGNAL("clicked()"), self.CancelButton_clicked)
  57.         #self.connect(self.ApplyButton, SIGNAL("clicked()"), self.ApplyButton_clicked)
  58.         self.connect(self.DeviceComboBox, SIGNAL("DeviceUriComboBox_noDevices"), self.DeviceUriComboBox_noDevices)
  59.         self.connect(self.DeviceComboBox, SIGNAL("DeviceUriComboBox_currentChanged"),
  60.                     self.DeviceUriComboBox_currentChanged)
  61.  
  62.         self.DeviceComboBox.setFilter({'power-settings': (operator.gt, 0)})
  63.  
  64.         # Application icon
  65.         self.setWindowIcon(QIcon(load_pixmap('hp_logo', '128x128')))
  66.  
  67.         if self.device_uri:
  68.             self.DeviceComboBox.setInitialDevice(self.device_uri)
  69.  
  70.         self.DurationComboBox.addItem(self.__tr("15 minutes"), QVariant(15))
  71.         self.DurationComboBox.addItem(self.__tr("30 minutes"), QVariant(30))
  72.         self.DurationComboBox.addItem(self.__tr("45 minutes"), QVariant(45))
  73.         self.DurationComboBox.addItem(self.__tr("1 hour"), QVariant(60))
  74.         self.DurationComboBox.addItem(self.__tr("2 hours"), QVariant(120))
  75.         self.DurationComboBox.addItem(self.__tr("3 hours"), QVariant(180))
  76.  
  77.         self.connect(self.DurationComboBox, SIGNAL("activated(int)"), self.DurationComboBox_activated)
  78.  
  79.         self.connect(self.OnRadioButton, SIGNAL("toggled(bool)"), self.OnRadioButton_toggled)
  80.  
  81.  
  82.     def OnRadioButton_toggled(self, b):
  83.         i = self.DurationComboBox.currentIndex()
  84.         if i == -1:
  85.             return
  86.         v, ok = self.DurationComboBox.itemData(i).toInt()
  87.         if not ok:
  88.             return
  89.  
  90.         if self.power_settings == POWER_SETTINGS_EPML:
  91.             if b:
  92.                 self.setPowerSettingsEPML('999')
  93.             else:
  94.                 self.setPowerSettingsEPML(string.zfill(v, 3))
  95.  
  96.         elif self.power_settings == POWER_SETTINGS_PML:
  97.             if b:
  98.                 self.setPowerSettingsPML(pml.OID_POWER_SETTINGS_NEVER)
  99.             else:
  100.                 self.setPowerSettingsPML(self.getPMLSettingsValue(v))
  101.  
  102.  
  103.  
  104.     def updateUi(self):
  105.         self.DeviceComboBox.updateUi()
  106.  
  107.  
  108.     def updatePowerSettingsUi(self):
  109.         pass
  110.  
  111.  
  112.     def DeviceUriComboBox_currentChanged(self, device_uri):
  113.         beginWaitCursor()
  114.         try:
  115.             self.device_uri = device_uri
  116.  
  117.             if self.dev is not None:
  118.                 self.dev.close()
  119.  
  120.             self.dev = device.Device(self.device_uri)
  121.  
  122.             # Update
  123.             self.mq = device.queryModelByURI(self.device_uri)
  124.             self.power_settings = self.mq.get('power-settings', POWER_SETTINGS_NONE)
  125.  
  126.             self.TabWidget.setTabEnabled(TAB_POWER_SETTINGS, self.power_settings != POWER_SETTINGS_NONE)
  127.  
  128.             if self.power_settings == POWER_SETTINGS_EPML:
  129.                 self.updatePowerSettingsEPML()
  130.  
  131.             elif self.power_settings == POWER_SETTINGS_PML:
  132.                 self.updatePowerSettingsPML()
  133.  
  134.         finally:
  135.             endWaitCursor()
  136.  
  137.     # DJ 4x0 battery power settings
  138.  
  139.     # 15min = 015
  140.     # 30min = 030
  141.     # 45min = 045
  142.     # 1hr   = 060
  143.     # 2hr   = 120
  144.     # 3hr   = 180
  145.     # never = 999
  146.  
  147.     def updatePowerSettingsEPML(self):
  148.         value = self.getPowerSettingsEPML()
  149.  
  150.         if value == '999':
  151.             self.OnRadioButton.setChecked(True)
  152.             self.OffRadioButton.setChecked(False)
  153.         else:
  154.             self.OnRadioButton.setChecked(False)
  155.             self.OffRadioButton.setChecked(True)
  156.  
  157.             find = int(value)
  158.             index = self.DurationComboBox.findData(QVariant(find))
  159.  
  160.             if index != -1:
  161.                 self.DurationComboBox.setCurrentIndex(index)
  162.  
  163.  
  164.     def getPowerSettingsEPML(self):
  165.         value = self.dev.getDynamicCounter(256, False)
  166.         log.debug("Current power settings: %s" % value)
  167.         self.dev.closePrint()
  168.         return value[6:9]
  169.  
  170.  
  171.     def setPowerSettingsEPML(self, value):
  172.         log.debug("Setting power setting to %s" % value)
  173.         pcl= \
  174.     """\x1b%%-12345X@PJL ENTER LANGUAGE=PCL3GUI\n\x1bE\x1b%%Pmech.set_battery_autooff %s;\nudw.quit;\x1b*rC\x1bE\x1b%%-12345X""" % value
  175.         self.dev.printData(pcl, direct=True)
  176.         self.dev.closePrint()
  177.  
  178.     # h470
  179.  
  180.     # PML
  181.     # OID_POWER_SETTINGS = ('1.1.2.118', TYPE_ENUMERATION)
  182.     # OID_POWER_SETTINGS_15MIN = 1
  183.     # OID_POWER_SETTINGS_30MIN = 2
  184.     # OID_POWER_SETTINGS_45MIN = 3
  185.     # OID_POWER_SETTINGS_1HR = 4
  186.     # OID_POWER_SETTINGS_2HR = 5
  187.     # OID_POWER_SETTINGS_3HR = 6
  188.     # OID_POWER_SETTINGS_NEVER = 999
  189.  
  190.     def updatePowerSettingsPML(self):
  191.         value = self.getPowerSettingsPML()
  192.         if value == pml.OID_POWER_SETTINGS_NEVER:
  193.             self.OnRadioButton.setChecked(True)
  194.             self.OffRadioButton.setChecked(False)
  195.         else:
  196.             self.OnRadioButton.setChecked(False)
  197.             self.OffRadioButton.setChecked(True)
  198.  
  199.             find = 15
  200.             if value == pml.OID_POWER_SETTINGS_15MIN:
  201.                 find = 15
  202.             elif value == pml.OID_POWER_SETTINGS_30MIN:
  203.                 find = 30
  204.             elif value == pml.OID_POWER_SETTINGS_45MIN:
  205.                 find = 45
  206.             elif value == pml.OID_POWER_SETTINGS_1HR:
  207.                 find = 60
  208.             elif value == pml.OID_POWER_SETTINGS_2HR:
  209.                 find = 120
  210.             elif value == pml.OID_POWER_SETTINGS_3HR:
  211.                 find = 180
  212.  
  213.             index = self.DurationComboBox.findData(QVariant(find))
  214.  
  215.             if index != -1:
  216.                 self.DurationComboBox.setCurrentIndex(index)
  217.  
  218.  
  219.  
  220.     def getPowerSettingsPML(self):
  221.         pml_result_code, value = self.dev.getPML(pml.OID_POWER_SETTINGS)
  222.         self.dev.closePML()
  223.         log.debug("Current power settings: %s" % value)
  224.         return value
  225.  
  226.  
  227.     def setPowerSettingsPML(self, value):
  228.         log.debug("Setting power setting to %s" % value)
  229.         pml_result_code = self.dev.setPML(pml.OID_POWER_SETTINGS, value)
  230.         self.dev.closePML()
  231.  
  232.     # #####################
  233.  
  234.  
  235.     def DurationComboBox_activated(self, i):
  236.         if i == -1:
  237.             return
  238.         v, ok = self.DurationComboBox.itemData(i).toInt()
  239.         if not ok:
  240.             return
  241.         if self.power_settings == POWER_SETTINGS_EPML:
  242.             beginWaitCursor()
  243.             try:
  244.                 self.setPowerSettingsEPML(string.zfill(v, 3))
  245.             finally:
  246.                 endWaitCursor()
  247.  
  248.         elif self.power_settings == POWER_SETTINGS_PML:
  249.             beginWaitCursor()
  250.             try:
  251.                 self.setPowerSettingsPML(self.getPMLSettingsValue(v))
  252.             finally:
  253.                 endWaitCursor()
  254.  
  255.  
  256.     def getPMLSettingsValue(self, v):
  257.         x = pml.OID_POWER_SETTINGS_15MIN
  258.  
  259.         if v == 15:
  260.             x = pml.OID_POWER_SETTINGS_15MIN
  261.         elif v == 30:
  262.             x = pml.OID_POWER_SETTINGS_30MIN
  263.         elif v == 45:
  264.             x = pml.OID_POWER_SETTINGS_45MIN
  265.         elif v == 60:
  266.             x = pml.OID_POWER_SETTINGS_1HR
  267.         elif v == 120:
  268.             x = pml.OID_POWER_SETTINGS_2HR
  269.         elif v == 180:
  270.             x = pml.OID_POWER_SETTINGS_3HR
  271.  
  272.         return x
  273.  
  274.  
  275.     def DeviceUriComboBox_noDevices(self):
  276.         FailureUI(self, self.__tr("<b>No devices that support device setup found.</b>"))
  277.         self.close()
  278.  
  279.  
  280.     def CancelButton_clicked(self):
  281.         if self.dev is not None:
  282.             self.dev.close()
  283.  
  284.         self.close()
  285.  
  286.  
  287. #    def ApplyButton_clicked(self):
  288. #        pass
  289.  
  290.     #
  291.     # Misc
  292.     #
  293.  
  294.     def __tr(self,s,c = None):
  295.         return qApp.translate("DeviceSetupDialog",s,c)
  296.  
  297.  
  298.